//
// Plantilla de proyecto de NDS
//


#include <nds.h>
//#include <fat.h>

// Includes C++
#include <stdio.h>
#include <string.h>
#include <unistd.h>


// Includes propios
#include <nf_lib.h>
#include <errno.h>

#include "ky_geturl.h"
#include "mainscreen.h"
#include "overviewscreen.h"

//#include "efs_lib.h" // be sure to put the efs_lib.c/.h files in your source diectory and #include



void waitcustom(){
	swiWaitForVBlank();
	/*swiWaitForVBlank();
	swiWaitForVBlank();
	swiWaitForVBlank();
	swiWaitForVBlank();
	swiWaitForVBlank();
	swiWaitForVBlank();
	swiWaitForVBlank();*/
}

int cptframe = 0;


int main(int argc, char ** argv)
{
	defaultExceptionHandler();
	NF_SetRootFolder("EFS");	// Define la carpeta ROOT para usar EFS

	// Inicializa las 2D
	NF_Set2D(0, 0);				// Modo 2D_0 en la pantalla superior
	NF_Set2D(1, 0);

	NF_InitTiledBgBuffers();	// Inicializa los buffers para almacenar fondos
	NF_InitTiledBgSys(0);		// Inicializa los fondos Tileados para la pantalla superior
	NF_InitTiledBgSys(1);		// Iniciliaza los fondos Tileados para la pantalla inferior

	NF_InitSpriteBuffers();		// Inicializa los buffers para almacenar sprites y paletas
	NF_InitSpriteSys(0);		// Inicializa los sprites para la pantalla superior
	NF_InitSpriteSys(1);		// Inicializa los sprites para la pantalla inferior

	NF_InitTextSys(0);
	NF_InitTextSys(1);
	
	irqSet(IRQ_VBLANK, updateAnim);

	loadDataMainScreen();

	//log layer
	NF_CreateTextLayer(0,		// screen 0-1
					0,			// layer 0-3
					0,			// rotation 0-2
					"normal"	// name
					);

	createMainScreen();
	
	//int frame = 1;
	OverviewPage * op;
	while(1){
		swiWaitForVBlank();		// Espera al sincronismo vertical
		//NF_SpriteFrame(1, 0, frame);
		//frame++;
		//frame %= 2;

		/*char mytext[32];
		sprintf(mytext,"nb frame  = %d)", cptframe);
		NF_WriteText(0, 0, 0, 7, mytext);//screen, layer,x,y,text
		NF_UpdateTextLayers();
		cptframe++;*/

		NF_SpriteOamSet(0);
		NF_SpriteOamSet(1);
		// Actualiza el OAM
		oamUpdate(&oamMain);
		oamUpdate(&oamSub);

		scanKeys();	
		int pressed = keysDown();
		if ( !(pressed & KEY_TOUCH) ) continue;
		
		arrowTouched();
		op = boutonTouched();
		
		if(op!=NULL){
			clearMainScreen();
			NF_UnloadTextFont("normaltop");

			runoscreen(op);
		}
		  
	}
	//oamUpdate(&oamSub);

}
